#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Modulos 
import sys, gtk, pygame, utils, objetos, math
from pygame.locals import *

# Constantes

# Clases
# ---------------------------------------------------------------------

class ObjetoGrafico(pygame.sprite.Sprite):
	def __init__(self, path, posInicialx, posInicialy):
		self.image = utils.load_image(path, True)
		self.rect = self.image.get_rect()

		self.estado = 0
		self.rect.centerx = posInicialx
		self.rect.centery = posInicialy
		self.posInicialx = posInicialx
		self.posInicialy = posInicialy

	def cambiarEstado(self, screen):
		if (self.estado >= 3):
			self.estado = 1
		else:
			self.estado = self.estado + 1

	def match(self):
		x, y = pygame.mouse.get_pos()
		if abs(self.rect.centerx - x) < 90  and abs(self.rect.centery - y) < 90 :
			return True
		else:
			return False

# ---------------------------------------------------------------------

def ajustarTexto(textoLargo, cantMaxima):
    ret = list()
    seguir = True
		
    while seguir == True:        
	if len(textoLargo) <= cantMaxima:
		texto = textoLargo
		seguir = False
	else:
		texto = textoLargo[0:cantMaxima]
		nro = texto.rfind(" ")
		if nro <= 0 :
			nro = cantMaxima
		texto = texto[0:nro]
		textoLargo = textoLargo[nro:]
	ret.append(texto)

    return ret
		

	
def dibujar(screen,cursor_picture, clock):
    salir = 0
    background_image = utils.load_image('images/fondo2.png')

    #boton de la flecha para continuar
    btn_adelante = objetos.BotonAdelante()
    btn_atras = objetos.BotonAtras()

    #texto superior derecho que indica el numero de clase
    clase2, clase2_rect = utils.texto_clase("Clase 2", 750*utils.RES, 15*utils.RES)

    titulo1, titulo1_rect = utils.texto_subtitulo("CUANDO EL AGUA FALTA: ESCASEZ", 300*utils.RES, 45*utils.RES)
    titulo2, titulo2_rect = utils.texto_subtitulo("...............................", 300*utils.RES, 58*utils.RES)

    bt1 = utils.BloqueTexto()
    bt1.agregarParrafo('''Hay dos grandes tipos de problemas ambientales vinculados con el agua: Uno, es el de la ESCASEZ. Quiere decir que el agua no alcanza para todo lo que se la requiere, que no hay suficiente agua para satisfacer las necesidades de la población.''', 50, 570, 70)
    bt1.agregarParrafo('''Por lo general, la escasez de agua se da en zonas naturalmente áridas y secas. En nuestro país, el noroeste y la Patagonia son las zonas donde puede haber más sequías.''', 45, 200, 300 )

    bt1l, bt1lrect = bt1.obtener_gui(False)

    escasez_a = ObjetoGrafico('images/clase2_escasez_a.png', 210*utils.RES, 180*utils.RES )
    textoA1, textoA1_rect = utils.texto_normal( '¿Será verdad'      , 85*utils.RES, 92*utils.RES, (0, 0, 0), 18)
    textoA2, textoA2_rect = utils.texto_normal( 'que puede' 	    , 85*utils.RES, 112*utils.RES,(0, 0, 0),  18)
    textoA3, textoA3_rect = utils.texto_normal( 'FALTAR el agua?'   , 85*utils.RES, 132*utils.RES,(0, 0, 0),  18)

    escasez_b = ObjetoGrafico('images/clase2_escasez_b.png', 530*utils.RES, 395*utils.RES)
    textoB, textoB_rect = utils.texto_normal("Claro que sí!", 630*utils.RES, 330*utils.RES)

    sonido_ducha = pygame.mixer.Sound("sounds/ducha.ogg")

    while salir == 0:
    
    	# Pump GTK messages.
		while gtk.events_pending():
			gtk.main_iteration()
			
		for eventos in pygame.event.get():
			if eventos.type == QUIT:
				sys.exit(0)
			elif eventos.type == pygame.VIDEORESIZE:
			   pygame.display.set_mode(eventos.size, pygame.RESIZABLE)	
			elif eventos.type == MOUSEBUTTONDOWN:
				mx, my = pygame.mouse.get_pos()
				if btn_adelante.rect.collidepoint(mx, my):
					salir = 7
					btn_adelante.sonido.play()	
				elif btn_atras.rect.collidepoint(mx, my):
					salir = 5
					btn_atras.sonido.play()	

				if escasez_a.match() == True:
					sonido_ducha.play()
					escasez_a.estado = 1 

				if escasez_b.match() == True:
					if escasez_a.estado == 1:
						escasez_b.estado = 1


		# Realiza la animacion del texto	
		screen.blit(background_image, (0, 0))
		screen.blit(clase2, clase2_rect)

		screen.blit(titulo1, titulo1_rect)
		screen.blit(titulo2, titulo2_rect)

		# Parrafos multinea
		for nl in range (0,len(bt1l)):
			screen.blit(bt1l[nl], bt1lrect[nl])

		screen.blit(escasez_a.image, escasez_a.rect)
		if escasez_a.estado == 1 :
			screen.blit(textoA1, textoA1_rect)
			screen.blit(textoA2, textoA2_rect)
			screen.blit(textoA3, textoA3_rect)

		screen.blit(escasez_b.image, escasez_b.rect)
		if escasez_b.estado == 1 :
			screen.blit(textoB, textoB_rect)


		screen.blit(btn_adelante.image, btn_adelante.rect)
		screen.blit(btn_atras.image, btn_atras.rect)
		screen.blit(cursor_picture, pygame.mouse.get_pos())
		pygame.display.flip()

		# Try to stay at 30 FPS
		clock.tick(30)
                	 
    return salir


# This function is called when the game is run directly from the command line:
# ./TestGame.py 
def main():
	
	pygame.init()
	screen = pygame.display.set_mode((int(800*utils.RES), int(520*utils.RES)), pygame.RESIZABLE) #pygame.display.get_surface() #

	# Fake a Sugar cursor for the pyGame canvas area
	pygame.mouse.set_cursor((8,8),(0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0))
	cursor_picture = pygame.image.load('images/standardcursor.png')
	cursor_picture.convert_alpha() 
	clock = pygame.time.Clock()
	dibujar(screen,cursor_picture,clock)
 
if __name__ == '__main__':
   main()
